/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"C9D68E20-23C6-4B0F-AA99-1C4861AC9E13",variableType:4}
 */
var f_banco_id = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"B624A954-223E-4313-9877-8BEB2D3AC535",variableType:4}
 */
var f_valor_id = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"96B1221F-6D08-4B16-8C63-89E37E9C28E3",variableType:4}
 */
var f_estado_cheq = null;

/**
 * @type {Date}
 *
 * @properties={typeid:35,uuid:"95A34040-695D-4072-84ED-97616F5D596B",variableType:93}
 */
var f_fecha_entrega = null;

/**
 * @type {JSFoundSet<db:/infocom/cheques>}
 * @properties={typeid:35,uuid:"6E1EBAF0-3461-4F17-95B5-C9F568D94EB7",variableType:-4}
 */
var fs_cheques = databaseManager.getFoundSet(databaseManager.getDataSourceServerName(controller.getDataSource()),'cheques');

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"3944B1EA-B972-44A1-B397-9DE3A3BE36DA",variableType:4}
 */
var f_cheque_nro = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"E8B4E9F4-2AD2-4D65-B15F-C7A151CE836F",variableType:4}
 */
var es_preview = 0;

/**
 *
 * @properties={typeid:24,uuid:"3C14B5C7-2F66-4CCC-BEA2-5841B7E5D0E8"}
 */
function cancelar() 
{
	Iniciar();
}

/**
 *
 * @properties={typeid:24,uuid:"562F642A-E1BB-4E16-9C0A-78D362054762"}
 * @AllowToRunInFind
 */
function confirmar() 
{  //  este form esta basado en ing_varios  19/03/2012
	totalizar();
	if (concepto == null) 
	{
		globals.DIALOGS.showWarningDialog('Aviso',"Debe ingresar Concepto" ,'OK') 
		return false;
	}
	if (concepto.length < 10) 
	{
		globals.DIALOGS.showWarningDialog('Aviso','Debe ingresar concepto con 10 caracteres por lo menos','OK')
		return false;
	}
	
	if (globals.zparam_usa_proyecto == 1 && proyecto_id == null) 
	{
		globals.DIALOGS.showWarningDialog('Aviso',"Debe ingresar proyecto" ,'OK') 
		return false;
	}
	
	 // no pueden ser todos cero
	 if (globals.gtotal_valores == 0 && globals.gtotal_varios == 0) 
	 {
		globals.DIALOGS.showWarningDialog('Aviso',"Debe ingresar Valores o Imputacion Contable" ,'OK') 
		return false;
	 }
 	 
	 // controlar 
	 if (Math.abs(globals.gtotal_valores - globals.gtotal_varios) > 0.005)
	 {
		 globals.DIALOGS.showWarningDialog('Aviso',"No coincide la suma los importes ingresados en valores e imputación contable",'OK')
		 return false;
	 }
	var estado_val=validar_al_confirmar();
	if (estado_val==false)
		return false;
		 
	//// NUMERACION de ingresos varios   codigo=52
	var fs_nro_rec = databaseManager.getFoundSet(databaseManager.getDataSourceServerName(controller.getDataSource()),'numeracion_pr')
	fs_nro_rec.find()
	fs_nro_rec.sucursal=sucursal
	fs_nro_rec.letra=letra
	fs_nro_rec.cod_comprobante=globals.zconf_numeracion_ing_varios_negat; 
	var found=fs_nro_rec.search()
	if (found != 1)
    {	
	   globals.DIALOGS.showWarningDialog('Aviso','Sucursal o Letra o Tipo de comprobante incorrectos al buscar numeración de ingresos varios','OK')
	   return false;  
    }
     
	fs_nro_rec.setSelectedIndex(1)
//==================== validar que no existe en rec_cabecera
	var nro_aux=fs_nro_rec.ultimo_numero + 1
	codigo_movimiento=globals.zconf_rec_cod_mov_ing_varios_neg  // 3
	globals.duplicacion_rec_cabecera(letra,sucursal,nro_aux,codigo_movimiento)  
	if (globals.gfilas != 0)
	{  // ya existe ese ingreso
		globals.DIALOGS.showWarningDialog('Aviso','Ya existe Ingreso Varios ' + letra + '-' + utils.numberFormat(sucursal,'0000') + '-' + utils.numberFormat(nro_aux,'00000000') + ' Verifique numerador de recibos','OK')		  
		return false; 
	}
	else
	{  // no existe ese ingreso, asigna el sig. numero
	  fs_nro_rec.ultimo_numero = fs_nro_rec.ultimo_numero + 1
 	}
 //==================== hasta validar que no existe en rec_cabecera				
      
// OTROS datos REC_CABECERA
    nro_comprobante=fs_nro_rec.ultimo_numero
    importe=globals.gtotal_valores 
    importe_en_letras=globals.nro_a_letra(importe);
    codigo_movimiento=globals.zconf_rec_cod_mov_ing_varios_neg  // 3= ingresos varios negativo // 19/03/2012
	
    
	var cuantos=rec_cabecera_to_rec_detalle.getSize()
	for (var i = 1 ; i <= cuantos; i++)
	{	// hay uno solo	en realidad	
		rec_cabecera_to_rec_detalle.setSelectedIndex(i) // hay uno solo	
		if (fs_cheques.estado==globals.zconf_chq_depositado)   // 19/03/2012 solo en este caso se genera movim
		{
			// CYB -EGREDO del banco donde rebotó  si fue depositado
			rec_cabecera_to_rec_detalle.rec_detalle_to_movim_cyb.newRecord();
			rec_cabecera_to_rec_detalle.rec_detalle_to_movim_cyb.apertura_id		= null;
			rec_cabecera_to_rec_detalle.rec_detalle_to_movim_cyb.cheque_id			= fs_cheques.cheque_id;
			rec_cabecera_to_rec_detalle.rec_detalle_to_movim_cyb.cod_movim			= globals.zconf_cyb_cod_movim_egreso;
			rec_cabecera_to_rec_detalle.rec_detalle_to_movim_cyb.concepto			= 'Chq.rechazado ' + fs_cheques.cheque_nro + ' - ' + fs_cheques.concepto;  // 19/03/2012 se le agrega el concepto original del cheque
			rec_cabecera_to_rec_detalle.rec_detalle_to_movim_cyb.cuentas_cyb_id		= fs_cheques.cheques_to_boleta_detalle.boleta_detalle_to_boleta_cabecera.boleta_cabecera_to_cuentas_cyb.cuentas_cyb_id; 
			rec_cabecera_to_rec_detalle.rec_detalle_to_movim_cyb.empresa_id			= null 
			rec_cabecera_to_rec_detalle.rec_detalle_to_movim_cyb.fecha_movim		= fecha
			rec_cabecera_to_rec_detalle.rec_detalle_to_movim_cyb.importe			= fs_cheques.importe
			rec_cabecera_to_rec_detalle.rec_detalle_to_movim_cyb.imputacion_id		= globals.zconf_cyb_imputacion_cheque_rechazado;
			rec_cabecera_to_rec_detalle.rec_detalle_to_movim_cyb.moneda_id			= fs_cheques.moneda_id 
			rec_cabecera_to_rec_detalle.rec_detalle_to_movim_cyb.fecha_conciliacion = null;
			rec_cabecera_to_rec_detalle.rec_detalle_to_movim_cyb.marca_conciliacion	= 0;
			rec_cabecera_to_rec_detalle.rec_detalle_to_movim_cyb.referencia			= fs_cheques.cheque_nro;
			rec_cabecera_to_rec_detalle.rec_detalle_to_movim_cyb.valor_id			= fs_cheques.valor_id
			rec_cabecera_to_rec_detalle.rec_detalle_to_movim_cyb.valor_id			= proyecto_id
		}	     
	} // fin del for	

//// REGRABAR CHEQUES  estado rechazado	
	fs_cheques.estado = globals.zconf_chq_rechazado; // 4	
   	
	//// GRABAR TODO
	var estado=databaseManager.saveData()
	if (estado==true)
	{
		var resp=globals.DIALOGS.showQuestionDialog('', 'Ingresos Varios - Cheque Rechazado ' + letra + '-' + utils.numberFormat(sucursal,'0000') + '-' + utils.numberFormat(nro_comprobante,'00000000') +  ' Generado correctamente' + ' Imprime:' ,  "Si", "No" )
		if (resp == 'Si')
		{
			es_preview = 1;    
			forms.ing_varios_imp.controller.showPrintPreview(true); 	
		}
		else
		{
			Iniciar() // no hacer Iniciar cuando se va al preview
		}
	}
	else
	{
		globals.DIALOGS.showWarningDialog('Aviso', 'Ingresos Varios - Cheque Rechazado - No fue generado ' ,  "OK")
		cancelar()
	}
	return true
}

/**
 *
 * @properties={typeid:24,uuid:"360D8630-5E3E-4786-B799-57AE70F6D6E8"}
 */
function salir_rec() 
{
	if (es_preview== 0)
	{
	 	var resp = globals.DIALOGS.showQuestionDialog( 'Confirma',  '¿Seguro que desea salir?' ,  'Si', 'No')
		if (resp == 'Si')
		{
			databaseManager.revertEditedRecords();
			databaseManager.setAutoSave(false); 
		}
	}
}

/**
 *
 * @properties={typeid:24,uuid:"7A01E803-B64F-4440-A727-828DB7484BA7"}
 */
function totalizar() 
{
	totales_varios();
}

/**
 *
 * @properties={typeid:24,uuid:"6CBF119B-E9D7-49CE-8AEF-FF3A2BE76030"}
 */
function Iniciar() 
{
	databaseManager.revertEditedRecords()
	databaseManager.setAutoSave(false)
	controller.newRecord(false);
	fecha = new Date();  
	letra="X";  
	globals.gtotal_varios=0.00;
	globals.gtotal_valores=0.00;
	globals.gtotal_saldo=0.00;
	elements.tabs_420.enabled=true;
	es_preview = 0;	
	f_cheque_nro=null;
	f_banco_id=null;
	f_valor_id=null;
	f_estado_cheq=null;
	f_fecha_entrega=null;
	globals.gEstado_cheq=null;
	globals.gFechaEntrega_cheq=null;
	concepto=null;
	}

/**
 *
 * @properties={typeid:24,uuid:"0417EF8A-CEE0-49FC-ACC4-639FEE0DFBC0"}
 */
function totales_valores() 
{
	globals.gtotal_valores = 0
	for ( var i = 1 ; i <= rec_cabecera_to_rec_detalle.getSize(); i++ )
	{
		rec_cabecera_to_rec_detalle.setSelectedIndex(i) 
		globals.gtotal_valores += rec_cabecera_to_rec_detalle.importe
	} 
}

/**
 *
 * @properties={typeid:24,uuid:"DFA9FE29-134A-45D2-B3B5-6548F46D50E6"}
 */
function agregar_renglon_varios() 
{// ALTA de renglon en rec_detalle_varios 
	rec_cabecera_to_rec_detalle_varios.newRecord(false);
}

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"79CF836E-84FD-46D3-9F4C-3B8988A58450"}
 */
function eliminar_renglon_varios(event) 
{
	var found = rec_cabecera_to_rec_detalle_varios.getSize()
	if (found==0)
	{
	   	globals.gtotal_varios=0.00 
	}
	else
	{
	var resp = globals.DIALOGS.showQuestionDialog( 'Confirma',  '¿Seguro que desea dar de baja? ',  'Si', 'No')
	if (resp == 'Si')
	{
		rec_cabecera_to_rec_detalle_varios.deleteRecord()
		totales_varios() 
	}
	}
}

/**
 *
 * @properties={typeid:24,uuid:"9B04F266-9F1F-4355-B1F5-756525F85ACE"}
 */
function totales_varios() 
{
	globals.gtotal_varios = 0;
	for ( var i = 1 ; i <= rec_cabecera_to_rec_detalle_varios.getSize(); i++ )
	{
		rec_cabecera_to_rec_detalle_varios.setSelectedIndex(i);
		globals.gtotal_varios += rec_cabecera_to_rec_detalle_varios.importe;
	}
}

/**
 * @properties={typeid:24,uuid:"B9673103-E2BE-4603-B2CA-0B922C3563B9"}
 */
function validar_al_confirmar() 
{
	var cuantos=rec_cabecera_to_rec_detalle.getSize()  // lo hace afuera para q sea solo una vez
	//// VALIDAR VALORES	
	for (var i = 1 ; i <= cuantos; i++)
	 {
		rec_cabecera_to_rec_detalle.setSelectedIndex(i);
		if (rec_cabecera_to_rec_detalle.importe==null)
	    {
	    	globals.DIALOGS.showWarningDialog('Aviso',"Debe ingresar Importe " ,'OK')
	    	return false;
	    }
		if (rec_cabecera_to_rec_detalle.valor_id==null)
	    {
	    	globals.DIALOGS.showWarningDialog('Aviso',"Debe ingresar el Valor ",'OK')
	    	return false;
	    }
		if (rec_cabecera_to_rec_detalle.cuentas_cyb==null)
	    {
	    	globals.DIALOGS.showWarningDialog('Aviso',"Debe ingresar Cuenta ",'OK')
	    	return false;
	    }
		if(rec_cabecera_to_rec_detalle.rec_detalle_to_valores.es_cheque==1)
		{
			if (rec_cabecera_to_rec_detalle.cheque_nro==null)
			{
		  		globals.DIALOGS.showWarningDialog('Aviso',"Debe ingresar Nro. cheque",'OK')
				return false;
	   	 	}
			if (rec_cabecera_to_rec_detalle.fecha_pago==null)
			{
	  			globals.DIALOGS.showWarningDialog('Aviso',"Debe ingresar Fecha de pago de cheque nro. " + rec_cabecera_to_rec_detalle.cheque_nro,'OK')
	 			return false;
			}
		}
	 }
	//// VALIDAR IMPUTACION contable
	 cuantos=rec_cabecera_to_rec_detalle_varios.getSize()
	 for (i = 1 ; i <= cuantos; i++) 
	 {
			rec_cabecera_to_rec_detalle_varios.setSelectedIndex(i)
			if (rec_cabecera_to_rec_detalle_varios.importe==null) 
			{
				globals.DIALOGS.showWarningDialog('Aviso','Debe ingresar importe','OK')
				return false;
			}
			if (rec_cabecera_to_rec_detalle_varios.concepto_varios==null) 
			{
				globals.DIALOGS.showWarningDialog('Aviso','Debe ingresar concepto','OK')
				return false;
			}
			if (rec_cabecera_to_rec_detalle_varios.plan_id==null) 
			{
				globals.DIALOGS.showWarningDialog('Aviso','Debe ingresar cuenta de imputación contable','OK')
				return false;
			}
	 }
		
	return true; 
}

/**
 *
 * @properties={typeid:24,uuid:"D663A63C-ABB6-4197-830A-1AADCF20A60A"}
 * @AllowToRunInFind
 */
function buscar_cheque() 
{
	if (f_cheque_nro==null || f_cheque_nro==0)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Debe informar número de cheque','OK')
		return;
	}
	if (f_banco_id == null || f_valor_id == null)  // debe informarlos
	{
		globals.DIALOGS.showWarningDialog('Aviso','Debe informar valor y banco','OK')
		return; 
	}
	// DEFINE FOUNDSET de CHEQUES para buscar
	var estado_find=fs_cheques.find();
	if (estado_find==false)
	{
		globals.DIALOGS.showWarningDialog('Aviso','No pudo buscar en cheques','OK')
		return;
	}
	rec_cabecera_to_rec_detalle.deleteAllRecords(); // se borra porque si no genera en c/consulta un registro de detalle
	fs_cheques.cheque_nro=f_cheque_nro;
	fs_cheques.rec_detalle_id='!=null';
	fs_cheques.valor_id=f_valor_id;
	fs_cheques.banco_id=f_banco_id;

	var found=fs_cheques.search();
	if (found==0) 
	{
		globals.DIALOGS.showWarningDialog('Aviso','No existe cheque con esas características','OK')
		return;
	}
	if (found!=1)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Hay más de un cheque con esas características','OK')
		return;
	}
	// ESTADO del cheque
	if(fs_cheques.estado != globals.zconf_chq_depositado && fs_cheques.estado != globals.zconf_chq_entregado_pago)
	{  // 3 y 2 respect.: solo debe tomar cheques con alguno de esos estados
		var estado_texto = globals.TabDetalles_Texto('estado_cheque',fs_cheques.estado)
		if (estado_texto == false)
			return;
		if (estado_texto != null)
		{
			globals.DIALOGS.showWarningDialog('Aviso','El cheque solicitado tiene estado  ' + estado_texto,'OK')
		}
		else
		{
			globals.DIALOGS.showWarningDialog('Aviso','Falta cargar descripcion del estado ' + fs_cheques.estado +' en Tablas_detalle','OK')
		}
		return;
	}
	// ORIGEN
	if (!fs_cheques.cheques_to_rec_detalle || fs_cheques.cheques_to_rec_detalle.rec_detalle_to_rec_cabecera.codigo_movimiento != globals.zconf_rec_cod_mov_ing_varios) 
	{
		var $res = globals.DIALOGS.showQuestionDialog('Aviso','El cheque no corresponde a un Ingreso Varios. ¿Desea continuar?','Si','No')
		if ($res == 'No')
			return
	}

	rec_cabecera_to_rec_detalle.newRecord();
	rec_cabecera_to_rec_detalle.banco_id			= fs_cheques.banco_id;
	rec_cabecera_to_rec_detalle.banco_sucursal		= fs_cheques.banco_sucursal
	rec_cabecera_to_rec_detalle.cheque_nro			= fs_cheques.cheque_nro
	rec_cabecera_to_rec_detalle.cuentas_cyb			= fs_cheques.cuentas_cyb_id
	rec_cabecera_to_rec_detalle.fecha_emision_chq 	= fs_cheques.fecha_emision
	rec_cabecera_to_rec_detalle.fecha_pago			= fs_cheques.fecha_pago
	rec_cabecera_to_rec_detalle.importe				= fs_cheques.importe
	rec_cabecera_to_rec_detalle.lugar_emision		= fs_cheques.lugar_emision
	rec_cabecera_to_rec_detalle.moneda_id			= fs_cheques.moneda_id
	rec_cabecera_to_rec_detalle.titular				= fs_cheques.titular
	rec_cabecera_to_rec_detalle.titular_cuit		= fs_cheques.titular_cuit
	rec_cabecera_to_rec_detalle.titular_direccion	= fs_cheques.titular_direccion
	rec_cabecera_to_rec_detalle.valor_id			= fs_cheques.valor_id;
	globals.gtotal_valores							= fs_cheques.importe;
	//  para mostrar en pantalla ing_varios_negat_2
	globals.gEstado_cheq 							= fs_cheques.estado;
	globals.gFechaEntrega_cheq						= fs_cheques.fecha_entrega;
	return
}
